home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / demos / howtoskinacat / titlepic / catpicture.s < prev    next >
Text File  |  1980-01-03  |  11KB  |  584 lines

  1. ùúùúÿËGgÿËGgÿËGgÿËGgÿËGgÿËGgÿËGgÿËGgÿËGgRaster=0
  2.  
  3. Track=0        ;0=ASM-One version
  4.         ;1=Track version
  5.  
  6. MyDmacon=%01111101111
  7. ;      abcdefghhhh
  8. ; a = Blitter nasty
  9. ; b = Enable DMA activity (always set this!)
  10. ; c = Bitplane enable
  11. ; d = Copper enable
  12. ; e = Blitter enable
  13. ; f = Sprite enable
  14. ; g = Disk enable
  15. ; h = Audio channels enable
  16.  
  17. MyIntena=%100000000100000
  18. ;      abcdeeeefghijkl
  19. ; a = Enable interrupts
  20. ; b = Lev. 6 External interrupt
  21. ; c = Lev. 5 Disk sync found
  22. ; d = Lev. 5 Serial port receive buffer full
  23. ; e = Lev. 4 Audio ch. 3-0 block finished
  24. ; f = Lev. 3 Blitter finished
  25. ; g = Lev. 3 Vertical blank
  26. ; h = Lev. 3 Copper
  27. ; i = Lev. 2 I/O Ports and timers
  28. ; j = Lev. 1 Software
  29. ; k = Lev. 1 Disk block finished
  30. ; l = Lev. 1 Serial port transmit buffer empty
  31.  
  32.         SECTION    Kode,code_c
  33.  
  34.  
  35.         JumpPtr    Begin
  36.  
  37. *******************************************************************************
  38. **Macros
  39. *******************************************************************************
  40. WaitBlt:    macro
  41. .vent\@:    btst    #14,$dff002
  42.         bne    .vent\@
  43.         endm
  44.  
  45. *******************************************************************************
  46. **Initialisering
  47. *******************************************************************************
  48. Begin:
  49.         IF    Track=0
  50.         move.w    Intenar+Base,OldIntena
  51.         move.w    Dmacon+Base,OldDmacon
  52.         move.w    #$7fff,Intena+Base
  53.         move.w    #$7fff,Dmacon+Base
  54.         move.w    #$7fff,Intreq+Base
  55.  
  56.         move.l    (Lev3Base).w,OldIrq3
  57.         ELSE
  58.         move.l    #Lev3Irq,(Lev1Base).w
  59.         rts
  60.         ENDC
  61.  
  62.  
  63.         lea    Planer+2,a0
  64.         move.l    #(Pic+8+0*40),d0
  65.         moveq    #2-1,d1
  66. .loop        move.w    d0,4(a0)
  67.         swap    d0
  68.         move.w    d0,(a0)
  69.         swap    d0
  70.         add.l    #40,d0
  71.         addq.w    #8,a0
  72.         dbra    d1,.loop
  73.  
  74.         IF    Track=0
  75.         move.l    #Lev3Irq,(Lev3Base).w
  76.         waitblt
  77.  
  78.         move.w    #MyDmacon+$8000,Dmacon+Base
  79.         move.w    #MyIntena+$8000,Intena+Base
  80.  
  81. Wait:
  82.         move.w    IWantOut(pc),d0
  83.         beq.b    wait
  84.  
  85. *******************************************************************************
  86. **Exit to AmigaDOS
  87. *******************************************************************************
  88. ExitToDos:
  89.         move.w    #$7fff,Intena+Base
  90.         move.w    #$7fff,Dmacon+Base
  91.         ENDC
  92.         rts
  93.  
  94. VBlank:        dc.w    0
  95.         IF    Track=0
  96. OldIntena:    dc.w    0
  97. OldDmacon:    dc.w    0
  98. OldIrq3:    dc.l    0
  99. IWantOut:    dc.w    0
  100.         ELSE
  101. IWantOut:    EQU    $80
  102.         ENDC
  103. MegaPause:    dc.w    500
  104.  
  105. *******************************************************************************
  106. **Level 3 interrupt
  107. *******************************************************************************
  108. Lev3Irq:
  109.         movem.l    d0-a6,-(sp)
  110.         move.l    #Copper,Cop2lch+Base
  111.         move.w    d0,Copjmp2+Base
  112.         move.w    #1,VBlank
  113. *******************************************************************************
  114.         bsr    Faders
  115.         cmp.w    #3,Story
  116.         bne.b    .NoLeft
  117. *******************************************************************************
  118.         move.w    #-1,IWantOut
  119. .NoLeft:    if    Raster=1
  120.         move.w    #$f00,Color00+Base
  121.         endif
  122.         waitblt
  123.         if    Raster=1
  124.         move.w    #$00f,Color00+Base
  125.         endif
  126.         movem.l    (sp)+,d0-a6
  127.         IFEQ    Track-0
  128.         move.w    #$0020,Intreq+Base
  129.         ELSE
  130.         move.w    #$0004,Intreq+Base
  131.         ENDC
  132.         rte
  133.  
  134.  
  135. Faders:        move.w    Story(pc),d0
  136.         beq    FadeUp
  137.         subq.w    #1,d0
  138.         beq    CountDown
  139.         subq.w    #1,d0
  140.         beq    FadeDn
  141.         rts
  142.  
  143. CountDown:    bsr    StyreSprite
  144.         subq.w    #1,MegaPause
  145.         bne.b    .ud
  146.         addq.w    #1,Story
  147. .ud:        rts
  148.  
  149. Svend:    dc.w    0
  150. StyreSprite:    move.w    Svend(pc),d0
  151.         addq.w    #1,Svend
  152.         and.w    #15,Svend
  153.         cmp.w    #8,d0
  154.         blt.b    .zero
  155.         lea    Copper,a0
  156.         move.l    #Spr1,d0
  157.         move.w    d0,6(a0)
  158.         swap    d0
  159.         move.w    d0,2(a0)
  160.         addq.w    #8,a0
  161.         move.l    #Spr2,d0
  162.         move.w    d0,6(a0)
  163.         swap    d0
  164.         move.w    d0,2(a0)
  165.         addq.w    #8,a0
  166.         move.l    #Spr3,d0
  167.         move.w    d0,6(a0)
  168.         swap    d0
  169.         move.w    d0,2(a0)
  170.         addq.w    #8,a0
  171.         move.l    #Spr4,d0
  172.         move.w    d0,6(a0)
  173.         swap    d0
  174.         move.w    d0,2(a0)
  175.         rts
  176. .zero        lea    Copper,a0
  177.         moveq    #0,d0
  178.         move.w    d0,6(a0)
  179.         move.w    d0,2(a0)
  180.         addq.w    #8,a0
  181.         move.w    d0,6(a0)
  182.         move.w    d0,2(a0)
  183.         addq.w    #8,a0
  184.         move.w    d0,6(a0)
  185.         move.w    d0,2(a0)
  186.         addq.w    #8,a0
  187.         move.w    d0,6(a0)
  188.         move.w    d0,2(a0)
  189.         rts
  190.  
  191.         
  192.  
  193.  
  194. *******************************************************************************
  195. **FadeUpDn
  196. *******************************************************************************
  197. Story:        dc.w    0
  198. FadeUp:
  199.         lea    Colors+2,a0
  200.         lea    Pic,a1
  201.         moveq    #4-1,d7
  202.         moveq    #0,d6
  203. .loop:        move.w    (a0),d0
  204.         move.w    (a1)+,d1
  205.         bsr    fader
  206.         move.w    d0,(a0)
  207.         cmp.w    d0,d1
  208.         bne    .notens
  209.         addq.w    #1,d6
  210. .notens:    addq.w    #4,a0
  211.         dbra    d7,.loop
  212.         cmp.w    #4,d6
  213.         bne    .ud
  214.         addq.w    #1,Story
  215. .ud:        rts
  216.  
  217. FadeDn:
  218.         lea    Colors+2,a0
  219.         moveq    #4-1,d7
  220.         moveq    #0,d6
  221. .loop:        move.w    (a0),d0
  222.         moveq    #0,d1
  223.         bsr    fader
  224.         move.w    d0,(a0)
  225.         cmp.w    d0,d1
  226.         bne    .notens
  227.         addq.w    #1,d6
  228. .notens:    addq.w    #4,a0
  229.         dbra    d7,.loop
  230.         cmp.w    #4,d6
  231.         bne    .ud
  232.         addq.w    #1,Story
  233. .ud:        rts
  234.  
  235. **d0=fade from
  236. **d1=fade to
  237. **out: d0=newcol
  238. fader:        move.w    d0,d2
  239.         move.w    d1,d3
  240.         lsr.w    #8,d2
  241.         lsr.w    #8,d3
  242.         cmp.w    d2,d3
  243.         beq    .nored
  244.         blt    .redsub
  245.         add.w    #$100,d0
  246.         bra    .nored
  247. .redsub:    sub.w    #$100,d0
  248. .nored:        move.w    d0,d2
  249.         move.w    d1,d3
  250.         lsr.w    #4,d2
  251.         lsr.w    #4,d3
  252.         and.w    #$f,d2
  253.         and.w    #$f,d3
  254.         cmp.w    d2,d3
  255.         beq    .nogreen
  256.         blt    .greensub
  257.         add.w    #$10,d0
  258.         bra    .nogreen
  259. .greensub:    sub.w    #$10,d0
  260. .nogreen:    move.w    d0,d2
  261.         move.w    d1,d3
  262.         and.w    #$f,d2
  263.         and.w    #$f,d3
  264.         cmp.w    d2,d3
  265.         beq    .noblue
  266.         blt    .bluesub
  267.         addq.w    #$1,d0
  268.         bra    .noblue
  269. .bluesub:    subq.w    #$1,d0
  270. .noblue:    rts
  271.  
  272. *******************************************************************************
  273. **Copperlist
  274. *******************************************************************************
  275.  
  276. Copper:
  277.         dc.w    Spr0pth,$0000
  278.         dc.w    Spr0ptl,$0000
  279.         dc.w    Spr1pth,$0000
  280.         dc.w    Spr1ptl,$0000
  281.         dc.w    Spr2pth,$0000
  282.         dc.w    Spr2ptl,$0000
  283.         dc.w    Spr3pth,$0000
  284.         dc.w    Spr3ptl,$0000
  285.         dc.w    Spr4pth,$0000
  286.         dc.w    Spr4ptl,$0000
  287.         dc.w    Spr5pth,$0000
  288.         dc.w    Spr5ptl,$0000
  289.         dc.w    Spr6pth,$0000
  290.         dc.w    Spr6ptl,$0000
  291.         dc.w    Spr7pth,$0000
  292.         dc.w    Spr7ptl,$0000
  293.  
  294.         dc.w    Diwstrt,$2c81
  295.         dc.w    Diwstop,$2cc1
  296.         dc.w    Ddfstrt,$0038
  297.         dc.w    Ddfstop,$00d0
  298.  
  299.         dc.w    $106,$0c00
  300.         dc.w    $1fc,0
  301.  
  302. Colors:    dc.w    $0180,$000,$0182,$000,$0184,$000,$0186,$000
  303.  
  304.     dc.w    $01a0,$000,$01a2,$fff,$01a4,$000,$01a6,$000
  305.     dc.w    $01a8,$000,$01aa,$fff,$01ac,$000,$01ae,$000
  306.     dc.w    $01b0,$000,$01b2,$fff,$01b4,$000,$01b6,$000
  307.     dc.w    $01b8,$000,$01ba,$fff,$01bc,$000,$01be,$000
  308.  
  309.         dc.w    $1001,$fffe
  310. Planer:        dc.w    Bpl1pth,0    ;(Pic+32+0*40)>>16
  311.         dc.w    Bpl1ptl,0    ;(Pic+32+0*40)&$ffff
  312.         dc.w    Bpl2pth,0    ;(Pic+32+1*40)>>16
  313.         dc.w    Bpl2ptl,0    ;(Pic+32+1*40)&$ffff
  314.  
  315.         dc.w    Bpl1mod,40
  316.         dc.w    Bpl2mod,40
  317.  
  318.         dc.w    Bplcon0,$2200
  319.         dc.w    Bplcon1,$0000
  320.         dc.w    Bplcon2,$0024
  321.  
  322.         dc.w    $ffff,$fffe
  323.  
  324. *******************************************************************************
  325. **Screens+Gfx
  326. *******************************************************************************
  327.         INCDIR    "Work:Code/Sources/HTSAC/TitlePic/"
  328. Pic:        INCBIN    "CatPic.blit2*320*256+cmap"
  329.  
  330.  
  331.  
  332.     CNOP    0,8
  333. Spr1:    dc.w    $10c0,$2207
  334.     dc.w $0000,$7ff8,$3fb0,$4048,$0c30,$73cf,$0c37,$1248
  335.     dc.w $0c3d,$1242,$0c39,$1246,$0c31,$124a,$0c31,$124a
  336.     dc.w $0c31,$124a,$0c31,$124a,$0c31,$124a,$0c31,$124a
  337.     dc.w $0c31,$124a,$0c31,$124a,$0c31,$124a,$0c00,$127b
  338.     dc.w $0c00,$1200,$0000,$1e00
  339.     dc.w 0,0
  340.  
  341.     CNOP    0,8
  342. Spr2:    dc.w    $10c8,$2207
  343.     dc.w $0000,$000f,$0007,$0008,$0006,$0f09,$0f07,$9088
  344.     dc.w $9986,$6649,$b186,$4a49,$b186,$4a49,$b186,$4a49
  345.     dc.w $b186,$4a49,$b186,$4a49,$b186,$4a49,$b186,$4e49
  346.     dc.w $bf06,$4089,$b006,$4f09,$9c06,$6209,$0006,$de09
  347.     dc.w $0007,$0008,$0000,$000f
  348.     dc.w 0,0
  349.  
  350.     CNOP    0,8
  351. Spr3:    dc.w    $10d0,$2207
  352.     dc.w $0000,$e000,$c000,$2000,$0000,$ffe3,$f6e3,$0914
  353.     dc.w $07b6,$f849,$0736,$08c9,$0636,$0949,$0636,$0949
  354.     dc.w $0636,$0949,$0636,$0949,$0636,$0949,$0636,$0949
  355.     dc.w $0636,$0949,$0636,$0949,$0633,$094c,$0000,$ff7b
  356.     dc.w $f000,$0800,$0000,$f800
  357.     dc.w 0,0
  358.  
  359.     CNOP    0,8
  360. Spr4:    dc.w    $10d8,$2207
  361.     dc.w $0000,$7000,$3000,$4000,$3000,$c000,$b000,$4000
  362.     dc.w $f000,$0000,$7000,$8000,$3000,$4000,$3000,$4000
  363.     dc.w $3000,$4000,$3000,$4000,$3000,$4000,$3000,$4000
  364.     dc.w $3000,$4000,$3000,$c000,$f000,$0000,$0000,$f000
  365.     dc.w $0000,$0000,$0000,$0000
  366.     dc.w 0,0
  367.  
  368.  
  369.  
  370. TheEnd:
  371.  
  372. *******************************************************************************
  373. **Hardware registers
  374. *******************************************************************************
  375. Bltddat=$000
  376. Dmaconr=$002
  377. Vposr=$004
  378. Vhposr=$006
  379. Dskdatr=$008
  380. Joy0dat=$00a
  381. Joy1dat=$00c
  382. Clxdat=$00e
  383. Adkconr=$010
  384. Pot0dat=$012
  385. Pot1dat=$014
  386. Potgor=$016
  387. Serdatr=$018
  388. Dskbytr=$01a
  389. Intenar=$01c
  390. Intreqr=$01e
  391. Dskpth=$020
  392. Dskptl=$022
  393. Dsklen=$024
  394. Dskdat=$026
  395. Refptr=$028
  396. Vposw=$02a
  397. Vhposw=$02c
  398. Copcon=$02e
  399. Serdat=$030
  400. Serper=$032
  401. Potgo=$034
  402. Joytest=$036
  403. Strequ=$038
  404. Strvbl=$03a
  405. Strhor=$03c
  406. Strlong=$03e
  407. Bltcon0=$040
  408. Bltcon1=$042
  409. Bltafwm=$044
  410. Bltalwm=$046
  411. Bltcpth=$048
  412. Bltcptl=$04a
  413. Bltbpth=$04c
  414. Bltbptl=$04e
  415. Bltapth=$050
  416. Bltaptl=$052
  417. Bltdpth=$054
  418. Bltdptl=$056
  419. Bltsize=$058
  420. Bltcmod=$060
  421. Bltbmod=$062
  422. Bltamod=$064
  423. Bltdmod=$066
  424. Bltcdat=$070
  425. Bltbdat=$072
  426. Bltadat=$074
  427. Dsksync=$07e
  428. Cop1lch=$080
  429. Cop1lcl=$082
  430. Cop2lch=$084
  431. Cop2lcl=$086
  432. Copjmp1=$088
  433. Copjmp2=$08a
  434. Copins=$08c
  435. Diwstrt=$08e
  436. Diwstop=$090
  437. Ddfstrt=$092
  438. Ddfstop=$094
  439. Dmacon=$096
  440. Clxcon=$98
  441. Intena=$09a
  442. Intreq=$09c
  443. Adkcon=$09e
  444. Aud0dat=$0aa
  445. Aud1dat=$0ba
  446. Aud2dat=$0ca
  447. Aud3dat=$0da
  448. Aud0lch=$0a0
  449. Aud1lch=$0b0
  450. Aud2lch=$0c0
  451. Aud3lch=$0d0
  452. Aud0len=$0a4
  453. Aud1len=$0b4
  454. Aud2len=$0c4
  455. Aud3len=$0d4
  456. Aud0per=$0a6
  457. Aud1per=$0b6
  458. Aud2per=$0c6
  459. Aud3per=$0d6
  460. Aud0vol=$0a8
  461. Aud1vol=$0b8
  462. Aud2vol=$0c8
  463. Aud3vol=$0d8
  464. Aud0lcl=$0a2
  465. Aud1lcl=$0b2
  466. Aud2lcl=$0c2
  467. Aud3lcl=$0d2
  468. Bpl1pth=$0e0
  469. Bpl1ptl=$0e2
  470. Bpl2pth=$0e4
  471. Bpl2ptl=$0e6
  472. Bpl3pth=$0e8
  473. Bpl3ptl=$0ea
  474. Bpl4pth=$0ec
  475. Bpl4ptl=$0ee
  476. Bpl5pth=$0f0
  477. Bpl5ptl=$0f2
  478. Bpl6pth=$0f4
  479. Bpl6ptl=$0f6
  480. Bplcon0=$100
  481. Bplcon1=$102
  482. Bplcon2=$104
  483. Bpl1mod=$108
  484. Bpl2mod=$10a
  485. Bpl1dat=$110
  486. Bpl2dat=$112
  487. Bpl3dat=$114
  488. Bpl4dat=$116
  489. Bpl5dat=$118
  490. Bpl6dat=$11a
  491. Spr0pth=$120
  492. Spr0ptl=$122
  493. Spr1pth=$124
  494. Spr1ptl=$126
  495. Spr2pth=$128
  496. Spr2ptl=$12a
  497. Spr3pth=$12c
  498. Spr3ptl=$12e
  499. Spr4pth=$130
  500. Spr4ptl=$132
  501. Spr5pth=$134
  502. Spr5ptl=$136
  503. Spr6pth=$138
  504. Spr6ptl=$13a
  505. Spr7pth=$13c
  506. Spr7ptl=$13e
  507. Spr0pos=$140
  508. Spr0ctl=$142
  509. Spr0data=$144
  510. Spr0datb=$146
  511. Spr1pos=$148
  512. Spr1ctl=$14a
  513. Spr1data=$14c
  514. Spr1datb=$14e
  515. Spr2pos=$150
  516. Spr2ctl=$152
  517. Spr2data=$154
  518. Spr2datb=$156
  519. Spr3pos=$158
  520. Spr3ctl=$15a
  521. Spr3data=$15c
  522. Spr3datb=$15e
  523. Spr4pos=$160
  524. Spr4ctl=$162
  525. Spr4data=$164
  526. Spr4datb=$166
  527. Spr5pos=$168
  528. Spr5ctl=$16a
  529. Spr5data=$16c
  530. Spr5datb=$16e
  531. Spr6pos=$170
  532. Spr6ctl=$172
  533. Spr6data=$174
  534. Spr6datb=$176
  535. Spr7pos=$178
  536. Spr7ctl=$17a
  537. Spr7data=$17c
  538. Spr7datb=$17e
  539. Color00=$180
  540. Color01=$182
  541. Color02=$184
  542. Color03=$186
  543. Color04=$188
  544. Color05=$18a
  545. Color06=$18c
  546. Color07=$18e
  547. Color08=$190
  548. Color09=$192
  549. Color10=$194
  550. Color11=$196
  551. Color12=$198
  552. Color13=$19a
  553. Color14=$19c
  554. Color15=$19e
  555. Color16=$1a0
  556. Color17=$1a2
  557. Color18=$1a4
  558. Color19=$1a6
  559. Color20=$1a8
  560. Color21=$1aa
  561. Color22=$1ac
  562. Color23=$1ae
  563. Color24=$1b0
  564. Color25=$1b2
  565. Color26=$1b4
  566. Color27=$1b6
  567. Color28=$1b8
  568. Color29=$1ba
  569. Color30=$1bc
  570. Color31=$1be
  571. Base=$dff000
  572.  
  573. *******************************************************************************
  574. **Interrupt addresses
  575. *******************************************************************************
  576. Lev1Base=$64
  577. Lev2Base=$68
  578. Lev3Base=$6c
  579. Lev4Base=$70
  580. Lev5Base=$74
  581. Lev6Base=$78
  582. Lev7Base=$7c
  583.  
  584.